#ifndef __M_LANG_TYPES_H__
#define __M_LANG_TYPES_H__

enum LanguageContainer
{
    // Null
    LANG_NULL,

    // General
    LANG_YES,
    LANG_NO,
    LANG_CONFIRM,
    LANG_CANCEL,
    LANG_BACK,
    LANG_EXIT,

    // Dialog
    LANG_TIP,
    LANG_MENU,
    LANG_COLSE,

    // Safe mode
    LANG_MESSAGE_WARN_SAFE_MODE,

    // Button string
    LANG_BUTTON_LEFT,
    LANG_BUTTON_UP,
    LANG_BUTTON_RIGHT,
    LANG_BUTTON_DOWN,
    LANG_BUTTON_A,
    LANG_BUTTON_B,
    LANG_BUTTON_X,
    LANG_BUTTON_Y,
    LANG_BUTTON_L,
    LANG_BUTTON_R,
    LANG_BUTTON_L1,
    LANG_BUTTON_R1,
    LANG_BUTTON_L2,
    LANG_BUTTON_R2,
    LANG_BUTTON_L3,
    LANG_BUTTON_R3,
    LANG_BUTTON_SELECT,
    LANG_BUTTON_START,
    LANG_BUTTON_HOME,
    LANG_BUTTON_LEFT_ANALOG_LEFT,
    LANG_BUTTON_LEFT_ANALOG_UP,
    LANG_BUTTON_LEFT_ANALOG_RIGHT,
    LANG_BUTTON_LEFT_ANALOG_DOWN,
    LANG_BUTTON_RIGHT_ANALOG_LEFT,
    LANG_BUTTON_RIGHT_ANALOG_UP,
    LANG_BUTTON_RIGHT_ANALOG_RIGHT,
    LANG_BUTTON_RIGHT_ANALOG_DOWN,

    LANG_BUTTON_ENTER,
    LANG_BUTTON_CANCEL,

    // Button string 2
    LANG_BUTTON_CROSS,
    LANG_BUTTON_CIRCLE,
    LANG_BUTTON_SQUARE,
    LANG_BUTTON_TRIANGLE,

    LANG_BUTTON_C,
    LANG_BUTTON_D,
    LANG_BUTTON_E,
    LANG_BUTTON_F,
    LANG_BUTTON_G,
    LANG_BUTTON_H,
    LANG_BUTTON_Z,

    LANG_BUTTON_X1,
    LANG_BUTTON_X2,
    LANG_BUTTON_X3,
    LANG_BUTTON_X4,
    LANG_BUTTON_Y1,
    LANG_BUTTON_Y2,
    LANG_BUTTON_Y3,
    LANG_BUTTON_Y4,

    LANG_SWICTH_MODE,
    LANG_COIN,
    LANG_SELECT,
    LANG_START,
    LANG_TURBO,
    LANG_FDS_DISK_SIDE_CHANGE,
    LANG_FDS_INSERT_EJECT_DISK,

    // Browser
    LANG_APP_TITLE,

    LANG_PARENT_DIR,
    LANG_OPEN_DIR,
    LANG_START_GAME,
    LANG_CONTEXT_MENU,
    LANG_SETTING_MENU,
    LANG_ABOUT,
    LANG_CHANGE_DIR,

    LANG_CONTEXT_MENU_START_GAME,
    LANG_CONTEXT_MENU_DELETE_GAME,
    LANG_CONTEXT_MENU_DELETE_AUTO_SAVESTATE,
    LANG_CONTEXT_MENU_DELETE_AUTO_SAVEFILE,
    LANG_CONTEXT_MENU_DELETE_CACHE_FILES,

    LANG_MESSAGE_ASK_DELETE_GAME,
    LANG_MESSAGE_ASK_DELETE_AUTO_STATE,
    LANG_MESSAGE_ASK_DELETE_AUTO_SAVEFILE,
    LANG_MESSAGE_ASK_DELETE_CACHE_FILES,
    LANG_MESSAGE_START_GAME_FAILED,
    LANG_MESSAGE_WAIT_EXITING,

    // About
    LANG_ABOUT_TITLE,

    // Menu tab
    LANG_MENU_MAIN,
    LANG_MENU_STATE,
    LANG_MENU_GRAPHICS,
    LANG_MENU_CONTROL,
    LANG_MENU_HOTKEY,
    LANG_MENU_CORE,
    LANG_MENU_CHEAT,
    LANG_MENU_MISC,
    LANG_MENU_APP,

    // Menu general
    LANG_DISABLE,
    LANG_DEFAULT,
    LANG_AUTO,
    LANG_NONE,
    LANG_RESET_CONFIG,

    // Menu main
    LANG_RESUME_GAME,
    LANG_RESET_GAME,
    LANG_EXIT_GAME,
    LANG_DISK_CONTROL,
    LANG_EXIT_TO_ARCH,
    LANG_EXIT_APP,

    LANG_SWITCH_DISK,
    LANG_DISK,
    LANG_CURRENT,

    // Menu graphics
    LANG_DISPLAY_SIZE,
    LANG_ASPECT_RATIO,
    LANG_DISPLAY_ROTATE,
    LANG_GRAPHICS_SHADER,
    LANG_GRAPHICS_SMOOTH,
    LANG_OVERLAY_SELECT,
    LANG_OVERLAY_MODE,
    LANG_SHOW_FPS,

    LANG_DISPLAY_SIZE_1X,
    LANG_DISPLAY_SIZE_2X,
    LANG_DISPLAY_SIZE_3X,
    LANG_DISPLAY_SIZE_FULL,

    LANG_ASPECT_RATIO_BY_GAME_RESOLUTION,
    LANG_ASPECT_RATIO_BY_DEV_SCREEN,
    LANG_ASPECT_RATIO_8_7,
    LANG_ASPECT_RATIO_4_3,
    LANG_ASPECT_RATIO_3_2,
    LANG_ASPECT_RATIO_16_9,

    LANG_DISPLAY_ROTATE_CW_90,
    LANG_DISPLAY_ROTATE_CW_180,
    LANG_DISPLAY_ROTATE_CW_270,

    LANG_SHADER_LCD3X,
    LANG_SHADER_SHARP_BILINEAR_SIMPLE,
    LANG_SHADER_SHARP_BILINEAR,
    LANG_SHADER_ADVANCED_AA,

    LANG_OVERLAY_MODE_OVERLAY,
    LANG_OVERLAY_MODE_BACKGROUND,

    // Menu control
    LANG_CONTROLLER_PORT,
    LANG_FRONT_TOUCH_TO_BUTTON,
    LANG_BACK_TOUCH_TO_BUTTON,
    LANG_TURBO_DELAY,

    // Menu misc
    LANG_AUTO_SAVE_LOAD_STATE,
    LANG_ENABLE_REWIND,
    LANG_REWIND_MAX_COUNT,
    LANG_REWIND_INTERVAL_TIME,
    LANG_SAVE_SCREENSHOT,
    LANG_SAVE_PREVIEW,

    LANG_SAVE_SCREENSHOT_OK,
    LANG_SAVE_SCREENSHOT_FAILED,
    LANG_SAVE_PREVIEW_OK,
    LANG_SAVE_PREVIEW_FAILED,

    // Menu hotkey
    LANG_HOTKEY_SAVESTATE,
    LANG_HOTKEY_LOADSTATE,
    LANG_HOTKEY_GAME_SPEED_UP,
    LANG_HOTKEY_GAME_SPEED_DOWN,
    LANG_HOTKEY_GAME_REWIND,
    LANG_HOTKEY_CONTROLLER_PORT_UP,
    LANG_HOTKEY_CONTROLLER_PORT_DOWN,
    LANG_HOTKEY_EXIT_GAME,

    // Menu app
    LANG_PREVIEW_PATH,
    LANG_PREVIEW_STYLE,
    LANG_APP_LOG,
    LANG_CORE_LOG,
    LANG_SHOW_LOG,
    LANG_LANGUAGE,

    LANG_PREVIEW_PATH_FROM_AUTO_STATE,

    LANG_PREVIEW_STYLE_PRESERVE_FULL,
    LANG_PREVIEW_STYLE_STRETCH_FULL,
    LANG_PREVIEW_STYLE_CROP_FULL,

    // Menu state
    LANG_STATE_EXISTENT_STATE,
    LANG_STATE_EMPTY_STATE,

    LANG_STATE_LOAD_STATE,
    LANG_STATE_SAVE_STATE,
    LANG_STATE_DELETE_STATE,

    // Emu
    LANG_REWIND_MALLOC_STATE_DATA_FAILED,

    LANGUAGE_CONTAINER_SIZE,
};

#if defined(VITA)

#define LANG_LOCAL_BUTTON_LEFT LANG_BUTTON_LEFT
#define LANG_LOCAL_BUTTON_UP LANG_BUTTON_UP
#define LANG_LOCAL_BUTTON_RIGHT LANG_BUTTON_RIGHT
#define LANG_LOCAL_BUTTON_DOWN LANG_BUTTON_DOWN
#define LANG_LOCAL_BUTTON_A LANG_BUTTON_CROSS
#define LANG_LOCAL_BUTTON_B LANG_BUTTON_CIRCLE
#define LANG_LOCAL_BUTTON_X LANG_BUTTON_SQUARE
#define LANG_LOCAL_BUTTON_Y LANG_BUTTON_TRIANGLE
#define LANG_LOCAL_BUTTON_L1 LANG_BUTTON_L1
#define LANG_LOCAL_BUTTON_R1 LANG_BUTTON_R1
#define LANG_LOCAL_BUTTON_L2 LANG_BUTTON_L2
#define LANG_LOCAL_BUTTON_R2 LANG_BUTTON_R2
#define LANG_LOCAL_BUTTON_L3 LANG_BUTTON_L3
#define LANG_LOCAL_BUTTON_R3 LANG_BUTTON_R3
#define LANG_LOCAL_BUTTON_SELECT LANG_BUTTON_SELECT
#define LANG_LOCAL_BUTTON_START LANG_BUTTON_START
#define LANG_LOCAL_BUTTON_HOME LANG_BUTTON_HOME
#define LANG_LOCAL_BUTTON_LEFT_ANALOG_LEFT LANG_BUTTON_LEFT_ANALOG_LEFT
#define LANG_LOCAL_BUTTON_LEFT_ANALOG_UP LANG_BUTTON_LEFT_ANALOG_UP
#define LANG_LOCAL_BUTTON_LEFT_ANALOG_RIGHT LANG_BUTTON_LEFT_ANALOG_RIGHT
#define LANG_LOCAL_BUTTON_LEFT_ANALOG_DOWN LANG_BUTTON_LEFT_ANALOG_DOWN
#define LANG_LOCAL_BUTTON_RIGHT_ANALOG_LEFT LANG_BUTTON_RIGHT_ANALOG_LEFT
#define LANG_LOCAL_BUTTON_RIGHT_ANALOG_UP LANG_BUTTON_RIGHT_ANALOG_UP
#define LANG_LOCAL_BUTTON_RIGHT_ANALOG_RIGHT LANG_BUTTON_RIGHT_ANALOG_RIGHT
#define LANG_LOCAL_BUTTON_RIGHT_ANALOG_DOWN LANG_BUTTON_RIGHT_ANALOG_DOWN

#define LANG_LOCAL_BUTTON_ENTER LANG_BUTTON_ENTER
#define LANG_LOCAL_BUTTON_CANCEL LANG_BUTTON_CANCEL

#else

#define LANG_LOCAL_BUTTON_LEFT LANG_BUTTON_LEFT
#define LANG_LOCAL_BUTTON_UP LANG_BUTTON_UP
#define LANG_LOCAL_BUTTON_RIGHT LANG_BUTTON_RIGHT
#define LANG_LOCAL_BUTTON_DOWN LANG_BUTTON_DOWN
#define LANG_LOCAL_BUTTON_A LANG_BUTTON_A
#define LANG_LOCAL_BUTTON_B LANG_BUTTON_B
#define LANG_LOCAL_BUTTON_X LANG_BUTTON_X
#define LANG_LOCAL_BUTTON_Y LANG_BUTTON_Y
#define LANG_LOCAL_BUTTON_L1 LANG_BUTTON_L1
#define LANG_LOCAL_BUTTON_R1 LANG_BUTTON_R1
#define LANG_LOCAL_BUTTON_L2 LANG_BUTTON_L2
#define LANG_LOCAL_BUTTON_R2 LANG_BUTTON_R2
#define LANG_LOCAL_BUTTON_L3 LANG_BUTTON_L3
#define LANG_LOCAL_BUTTON_R3 LANG_BUTTON_R3
#define LANG_LOCAL_BUTTON_SELECT LANG_BUTTON_SELECT
#define LANG_LOCAL_BUTTON_START LANG_BUTTON_START
#define LANG_LOCAL_BUTTON_HOME LANG_BUTTON_HOME
#define LANG_LOCAL_BUTTON_LEFT_ANALOG_LEFT LANG_BUTTON_LEFT_ANALOG_LEFT
#define LANG_LOCAL_BUTTON_LEFT_ANALOG_UP LANG_BUTTON_LEFT_ANALOG_UP
#define LANG_LOCAL_BUTTON_LEFT_ANALOG_RIGHT LANG_BUTTON_LEFT_ANALOG_RIGHT
#define LANG_LOCAL_BUTTON_LEFT_ANALOG_DOWN LANG_BUTTON_LEFT_ANALOG_DOWN
#define LANG_LOCAL_BUTTON_RIGHT_ANALOG_LEFT LANG_BUTTON_RIGHT_ANALOG_LEFT
#define LANG_LOCAL_BUTTON_RIGHT_ANALOG_UP LANG_BUTTON_RIGHT_ANALOG_UP
#define LANG_LOCAL_BUTTON_RIGHT_ANALOG_RIGHT LANG_BUTTON_RIGHT_ANALOG_RIGHT
#define LANG_LOCAL_BUTTON_RIGHT_ANALOG_DOWN LANG_BUTTON_RIGHT_ANALOG_DOWN

#define LANG_LOCAL_BUTTON_ENTER LANG_BUTTON_ENTER
#define LANG_LOCAL_BUTTON_CANCEL LANG_BUTTON_CANCEL

#endif

#endif
